#ifndef DATABASEOPERATOR_H
#define DATABASEOPERATOR_H

#include <QObject>

class QSqlDatabase;

class DatabaseOperator
{
public:
    static DatabaseOperator *getInstance();

    ~DatabaseOperator();

    // 打开数据库文件，连接名为InputMethod
    bool openDatabaseFile(const QString &filePath, const QString &passwd = QString());

    ///
    /// \brief findData 查找数据
    /// \param key      分割过切加入%的拼音
    /// \param number   需要的中文长度
    /// \param table    表名
    /// \return         中文词组qstringlist
    ///
    QStringList findData(const QString & key,
                         const QString & number,
                         const QString &table = QString("basePinyin"));
    ///
    /// \brief updateData 更新词频（times+=1），不存在则插入用户词
    /// \param pinyin     拼音关键字
    /// \param word       中文关键字
    /// \return           更新或插入是否成功
    ///
    bool updateData(const QString & pinyin, const QString & word);

    // 删除所有用户词
    bool deleteUserTable();
    // 重置所有词频（times)
    bool resetAllTimes();

private:
    DatabaseOperator() = default;
    ///
    /// \brief updateTimes 更新词频（times+=1）
    /// \param pinyin     拼音关键字
    /// \param word       中文关键字
    /// \return           更新是否成功
    ///
    bool updateTimes(const QString & pinyin, const QString & word, const QString & table);
    static DatabaseOperator * unique_instance;
};

#define IMDB DatabaseOperator::getInstance()

#endif // DATABASEOPERATOR_H
